home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / MISC / HCAL-27 / LM317.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1997-03-31  |  9.0 KB  |  303 lines

  1. 10  'LM317 - LM317 specifications - 11 JUN 90 rev. 30 MAR 97
  2. 20  COMMON EX$,PROG$,R
  3. 30  IF EX$=""THEN EX$="EXIT"
  4. 40  IF PROG$=""THEN GO$=EX$ ELSE GO$=PROG$
  5. 50  IF EO THEN 60 ELSE 80      'EO & OV chained from another program
  6. 60  V=INT(EO*10)/10:FLAG=1     'input voltage
  7. 70  VO=INT(OV*10)/10           'output voltage
  8. 80  COLOR 7,0,1
  9. 90  CLS:KEY OFF
  10. 100  UL$=STRING$(80,205)
  11. 110  U$="###,###.##"
  12. 120  U1$="####.##"
  13. 130  V$="##.##"
  14. 140  DIM R(18),RS(24)          'standard resistors
  15. 150  '.....standard resistor values
  16. 160  DATA 10,11,12,13,15,16,18,20,22,24,27,30,33,36,39,43,47
  17. 170  DATA 51,56,62,68,75,82,91
  18. 180  FOR Z=1 TO 17:READ E:R(Z)=E*10:NEXT Z   'data for R3
  19. 190  Q=0
  20. 200  FOR Y=1 TO 17 STEP 2:Q=Q+1:R(Q)=R(Y):NEXT Y
  21. 210  RESTORE
  22. 220  FOR Z=1 TO 24:READ RS(Z):NEXT Z        'standard resistors
  23. 230  '
  24. 240  T$=" LM317 VOLTAGE REGULATOR"+STRING$(32,32)+"by George Murphy VE3ERP "
  25. 250  COLOR 15,2:PRINT T$;
  26. 260  COLOR 1,0:PRINT STRING$(80,"<0xDF!>");
  27. 270  COLOR 7,0
  28. 280  IF V*VO THEN RO=3:CO=32:GOSUB 2050:GOTO 480
  29. 290  '
  30. 300  '.....start
  31. 310  RO=3:CO=32:GOSUB 2050                              'print diagram
  32. 320  PRINT UL$;
  33. 330  PRINT " Press number in < > to:
  34. 340  PRINT UL$;
  35. 350  PRINT "  < 1 >  RUN program";
  36. 360  IF V*VO THEN PRINT " with new input/output voltages" ELSE PRINT ""
  37. 370  IF V*VO=0 THEN 400
  38. 380  PRINT "  < 2 >  RE-RUN program with existing input/output voltages"
  39. 390  PRINT UL$;
  40. 400  PRINT "  < 0 >  EXIT"
  41. 410  IF V*VO=0 THEN PRINT UL$;
  42. 420  Z$=INKEY$
  43. 430  IF Z$="0"THEN CLS:CHAIN GO$
  44. 440  IF Z$="1"THEN V=0:VO=0:GOTO 480
  45. 450  IF Z$="2"THEN 480
  46. 460  GOTO 420
  47. 470  '
  48. 480  VIEW PRINT 11 TO 24:CLS:VIEW PRINT:LOCATE 11
  49. 490  R3=0:R4=0
  50. 500  IF V=0 THEN 530
  51. 510  LOCATE 4:PRINT " Input voltage =";V;"volts DC"
  52. 520  LOCATE 4,50:PRINT " Output voltage =";VO;"volts DC"
  53. 530  LOCATE 11
  54. 540  GOSUB 2220    'text
  55. 550  GOSUB 2900
  56. 560  '
  57. 570  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  58. 580  FOR Z=32 TO 62:RO=3:CO=Z:GOSUB 2050:NEXT Z         'move diagram
  59. 590  CEI=1
  60. 600  IF V THEN 800
  61. 610  LOCATE 3
  62. 620  INPUT " ENTER: Input voltage (minimum 3.7)............";V
  63. 630  IF V<3.7 THEN V=0:VIEW PRINT:GOTO 570
  64. 640  RO=3:CO=62
  65. 650  CEO=1:GOSUB 2050             'print diagram
  66. 660  LOCATE 4
  67. 670  INPUT " ENTER: Output voltage ........................";VO
  68. 680  IF VO>V THEN LOCATE CSRLIN-1:PRINT STRING$(50,32):GOTO 660
  69. 690  IF VO>0 THEN 710
  70. 700  LOCATE CSRLIN-1:PRINT STRING$(50,32):LOCATE CSRLIN-1:GOTO 670
  71. 710  IF V-VO<=40 THEN 800
  72. 720  '
  73. 730  '.....differential exceeds minimum
  74. 740  COLOR 15,0
  75. 750  PRINT " Exceeds maximum allowable input/output differential of 40 volts "
  76. 760  COLOR 7,0:V=0:GOSUB 2900
  77. 770  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  78. 780  GOTO 300
  79. 790  '
  80. 800  IF R3 THEN 940
  81. 810  CR3=1:GOSUB 2050             'print diagram
  82. 820  LOCATE 11,61:PRINT "Std. Resistor Values";
  83. 830  LOCATE 12,61:PRINT STRING$(20,196)
  84. 840  FOR Z=13 TO 21:LOCATE Z,68:PRINT R(Z-12);"ohms":NEXT Z
  85. 850  LOCATE 13,66:PRINT "VARPTR"
  86. 860  FOR Z=14 TO 20:LOCATE Z,66:PRINT "BLOAD":NEXT Z
  87. 870  LOCATE 21,66:PRINT "CLS"
  88. 880  LOCATE 17
  89. 890  PRINT " Pick any one of these resistors for your initial calculation:SOUNDSOUNDSOUNDBEEP"
  90. 900  PRINT " If you wish to change the configuration resulting from your"
  91. 910  PRINT " choice, you may re-run the program and pick another resistor."
  92. 920  LOCATE 5:INPUT " ENTER: Value of R3 (suggested range 100-470)..";R3
  93. 930  R4=R3*(VO/1.25-1)
  94. 940  FOR Z=11 TO 21:LOCATE Z,60:PRINT STRING$(21,32);:NEXT Z
  95. 950  '
  96. 960  '.....screen display
  97. 970  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  98. 980  CEI=1:CR3=1:CR4=1:CEO=1
  99. 990  GOSUB 2050   'diagram
  100. 1000  LOCATE 4
  101. 1010  I3=1.25/R3*1000            'current in mA. thru R3
  102. 1020  I4=I3+0.1                   'current in mA. thru R4
  103. 1030  PRINT TAB(8);"Input voltage....................";USING U$;V;
  104. 1040  PRINT " volts"
  105. 1050  PRINT TAB(8);"Sought Output voltage............";USING U$;VO;
  106. 1060  PRINT " volts"
  107. 1070  DV=V-2.5                          'dropout voltage
  108. 1080  PRINT TAB(8);"Dropout voltage..................";USING U$;DV;
  109. 1090  PRINT " volts"
  110. 1100  PRINT TAB(8);"Value of R3......................";USING U$;R3;
  111. 1110  PRINT " ohms"
  112. 1120  IF R3>=100 AND R3<=470 THEN 1160
  113. 1130  COLOR 0,7
  114. 1140  LOCATE 7,19:PRINT " (100-470 recommended)"
  115. 1150  COLOR 7,0
  116. 1160  PRINT TAB(8);"Current thru R3..................";USING U$;I3;
  117. 1170  PRINT " mA."
  118. 1180  PRINT TAB(8);"Current thru R4..................";USING U$;I4;
  119. 1190  PRINT " mA."
  120. 1200  PRINT SPC(6);:COLOR 0,7:PRINT " Value of R4:"
  121. 1210  '
  122. 1220  M=1      'multiplier
  123. 1230  FOR X=1 TO 24
  124. 1240  Y=RS(X)*M
  125. 1250  IF Y<R4 THEN LO=Y:GOTO 1270
  126. 1260  HI=Y:GOTO 1440
  127. 1270  NEXT X
  128. 1280  M=M*10:GOTO 1230
  129. 1290  '
  130. 1300  '.....R4 display subroutine
  131. 1310  OLDVO=VO
  132. 1320  VO=1.25*(1+R/R3):E=VO
  133. 1330  IF V-VO<2.5 THEN E=V-2.5      '2.5v. differential = dropout voltage
  134. 1340  PRINT " ";R$;TAB(19);USING U$;R;:PRINT " ohms = output of";USING U1$;E;
  135. 1350  PRINT " volts "
  136. 1360  '
  137. 1370  IF V-VO>=2.5 THEN 1400
  138. 1380  COLOR 0,7:LOCATE CSRLIN-1,57
  139. 1390  PRINT " UNREGULATED (Dropout)"
  140. 1400  COLOR 7,0
  141. 1410  VO=OLDVO
  142. 1420  RETURN
  143. 1430  '
  144. 1440  '.....display R4
  145. 1450  R$="Standard resistor":R=LO:COLOR 0,7:GOSUB 1300
  146. 1460  R$="Exact resistance":R=R4:COLOR 15,3:GOSUB 1300
  147. 1470  R$="Standard resistor":R=HI:COLOR 0,7:GOSUB 1300
  148. 1480  PRINT UL$;
  149. 1490  POTFLAG=0
  150. 1500  PRINT " Resistors of";LO;"or";HI;"ohms will provide outputs as shown, or"
  151. 1510  PRINT " you can assemble a precision resistor very close to";R4;"ohms,"
  152. 1520  PRINT " or you can use a potentiometer for R4."
  153. 1530  PRINT UL$;
  154. 1540  PRINT " Press number in < > to:"
  155. 1550  PRINT UL$;
  156. 1560  PRINT "   < 1 > Assemble a precision resistor for R4"
  157. 1570  PRINT "   < 2 > Use a potentiometer for R4"
  158. 1580  PRINT "   < 3 > Select a standard resistor for R4"
  159. 1590  PRINT "   < 4 > Return to Menu";
  160. 1600  Z$=INKEY$:IF Z$=""THEN 1600
  161. 1610  IF Z$="1" THEN VOUT=VO:GOSUB 2500:R=R4:CLS:CHAIN "precires"
  162. 1620  IF Z$="2" THEN 1710
  163. 1630  IF Z$="3" THEN 1660
  164. 1640  IF Z$="4" THEN VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3:GOTO 300
  165. 1650  GOTO 1600
  166. 1660  VIEW PRINT 19 TO 24:CLS:VIEW PRINT:LOCATE 19
  167. 1670  INPUT " ENTER: Your choice of value for R4 (ohms)....";R4
  168. 1680  VOUT=1.25*(1+R4/R3)
  169. 1690  GOSUB 2500:GOTO 300
  170. 1700  '
  171. 1710  VIEW PRINT 19 TO 24:CLS:VIEW PRINT
  172. 1720  POTFLAG=1
  173. 1730  COLOR 0,7
  174. 1740  LOCATE RO+4,CO+7:PRINT "BLOAD"
  175. 1750  LOCATE RO+5,CO+7:PRINT "CLSSOUNDSOUNDDEFDBL"
  176. 1760  LOCATE 19:COLOR 15,3
  177. 1770  PRINT" ENTER: Value (ohms) of a LINEAR pot greater than";R4;"ohms";
  178. 1780  INPUT POT
  179. 1790  COLOR 7,0
  180. 1800  FOR Z=8 TO 9:LOCATE Z:PRINT STRING$(55,32):NEXT Z
  181. 1810  FOR Z=11 TO 19:LOCATE Z:PRINT STRING$(80,32);:NEXT Z
  182. 1820  LOCATE 11
  183. 1830  COLOR 0,7
  184. 1840  PRINT USING "####,###";POT;:PRINT " ohm LINEAR potentiometer:"
  185. 1850  '
  186. 1860  COLOR 7,0                'display potentiomenter values
  187. 1870  FOR Z=1 TO 10
  188. 1880  R=POT*Z/10:R$=""
  189. 1890  IF R4>=R OR R4<=POT*(Z-1)/10 THEN 1950
  190. 1900  '
  191. 1910  COLOR 15,3
  192. 1920  PRINT " @";USING "####.#";R4/POT*100;:PRINT "% open =";
  193. 1930  Q=R:R=R4:GOSUB 1300:R=Q:GOTO 1960
  194. 1940  '
  195. 1950  IF R=R4 THEN COLOR 0,7
  196. 1960  IF Z=10 THEN R=POT
  197. 1970  PRINT " @";USING "####.#";Z*10;:PRINT "% open =";
  198. 1980  GOSUB 1300
  199. 1990  NEXT Z
  200. 2000  PRINT UL$;
  201. 2010  GOSUB 2900
  202. 2020  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  203. 2030  VOUT=VO:GOSUB 2500:GOTO 300
  204. 2040  '
  205. 2050  '.....diagram
  206. 2060  COLOR 0,7
  207. 2070  LOCATE RO+0,CO:PRINT "CSRLIN    LM317       "
  208. 2080  LOCATE RO+1,CO:PRINT "CSRLIN  inVARPTRSOUNDSOUNDSOUNDCOLORout    "
  209. 2090  LOCATE RO+2,CO:PRINT "CSRLIN + SOUND<0xB4!>   BLOADSOUNDBSAVESOUNDSOUND + "
  210. 2100  LOCATE RO+3,CO:PRINT "CSRLIN    CLSSOUNDBSAVESOUND' R3    "
  211. 2110  LOCATE RO+4,CO:PRINT "CSRLIN   adjCLSSOUNDSOUNDSOUND<0xB4!>     "
  212. 2120  LOCATE RO+5,CO:PRINT "CSRLIN          R4    "
  213. 2130  LOCATE RO+6,CO:PRINT "CSRLIN - SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDMOTORSOUNDSOUND - "
  214. 2140  IF CEI THEN COLOR 14,6:LOCATE RO+2,CO+2:PRINT"+"
  215. 2150  IF CR3 THEN COLOR 14,6:LOCATE RO+3,CO+11:PRINT"R3"
  216. 2160  IF CR4 THEN COLOR 14,6:LOCATE RO+5,CO+11:PRINT"R4"
  217. 2170  IF CEO THEN COLOR 14,6:LOCATE RO+2,CO+15:PRINT"+"
  218. 2180  CEI=0:CR3=0:CR4=0:CEO=0
  219. 2190  COLOR 7,0
  220. 2200  RETURN
  221. 2210  '
  222. 2220  '.....text block
  223. 2230  TB=8    'tab for text
  224. 2240  PRINT TAB(TB);
  225. 2250  PRINT "  The LM317 is a floating regulator and sees only the input-to-"
  226. 2260  PRINT TAB(TB);
  227. 2270  PRINT "output differential voltages, therefore power supplies of several"
  228. 2280  PRINT TAB(TB);
  229. 2290  PRINT "hundred volts can be regulated as long as the maximum input-to-"
  230. 2300  PRINT TAB(TB);
  231. 2310  PRINT "output differential of 40 volts is not exceeded."
  232. 2320  PRINT TAB(TB);
  233. 2330  PRINT "  Most manufacturers recommend by-passing the input and output"
  234. 2340  PRINT TAB(TB);
  235. 2350  PRINT "leads with 1 >F tantalum capacitors soldered directly to the leads"
  236. 2360  PRINT TAB(TB);
  237. 2370  PRINT "as close as possible to the points where the leads project through"
  238. 2380  PRINT TAB(TB);
  239. 2390  PRINT "the heat sink."
  240. 2400  PRINT TAB(TB);
  241. 2410  PRINT "  The current carrying capacity of the LM317 is 1.5 amperes. If"
  242. 2420  PRINT TAB(TB);
  243. 2430  PRINT "this current is not sufficient to operate the load a power"
  244. 2440  PRINT TAB(TB);
  245. 2450  PRINT "transistor may be added to increase the current handling"
  246. 2460  PRINT TAB(TB);
  247. 2470  PRINT "capability."
  248. 2480  RETURN
  249. 2490  '
  250. 2500  '.....practical circuits
  251. 2510  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 2,22
  252. 2520  GOSUB 2560:GOSUB 2900
  253. 2530  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  254. 2540  RETURN
  255. 2550  '
  256. 2560  '.....diagram
  257. 2570  LOCATE 3:K=14
  258. 2580  LOCATE ,K:PRINT"              TYPICAL LM317 APPLICATIONS              "
  259. 2590  COLOR 0,7
  260. 2600  LOCATE ,K:PRINT"                      CSRLINCSRLIN     VARPTRSOUNDPNP power transistor   "
  261. 2610  LOCATE ,K:PRINT"                      CSRLINCSRLIN     CLSSOUNDDEFDBLVARPTRSOUNDSOUNDSOUNDCOLOR                 "
  262. 2620  LOCATE ,K:PRINT"                      CSRLINCSRLIN     VARPTRSOUNDSOUND<0xB4!>e cBLOADSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDCOLOR       "
  263. 2630  LOCATE ,K:PRINT"                      CSRLINCSRLIN     CALL  CALL b CALL         CALL       "
  264. 2640  LOCATE ,K:PRINT" Vin VARPTRSOUNDSOUNDSOUNDSOUNDSOUNDCOLOR     Vout CSRLINCSRLIN Vin CALL  CLSSOUNDBSAVESOUND'VARPTRSOUNDSOUNDSOUNDSOUNDSOUNDCOLOR  CALL  Vout "
  265. 2650  LOCATE ,K:PRINT" SOUNDSOUNDSOUNDBSAVE<0xB4!>LM317BLOADBSAVESOUNDSOUNDSOUNDBSAVESOUNDSOUNDSOUNDSOUND CSRLINCSRLIN SOUNDSOUNDSOUNDSOUNDMOTORSOUNDR5SOUNDMOTORSOUNDBSAVE<0xB4!>LM317BLOADBSAVESOUNDMOTORSOUNDBSAVESOUNDSOUNDSOUNDSOUND "
  266. 2660  LOCATE ,K:PRINT"    CALLCLSSOUNDSOUNDBSAVESOUNDSOUND'CALL   CALL I-DEFDBL CSRLINCSRLIN      330-  CALLCLSSOUNDSOUNDBSAVESOUNDSOUND'CALL   CALL ISOUNDDEFDBL "
  267. 2670  LOCATE ,K:PRINT"    C2  CALL   C3  R3    CSRLINCSRLIN            C2  CALL   C3  R3    "
  268. 2680  LOCATE ,K:PRINT"    CALL   CLSSOUNDSOUNDSOUNDCALLSOUNDSOUNDSOUND<0xB4!>     CSRLINCSRLIN            CALL   CLSSOUNDSOUNDSOUNDCALLSOUNDSOUNDSOUND<0xB4!>     "
  269. 2690  LOCATE ,K:PRINT"    CALL       CALL   R4    CSRLINCSRLIN            CALL       CALL   R4    "
  270. 2700  LOCATE ,K:PRINT"    CALL       CALL   CALL     CSRLINCSRLIN            CALL       CALL   CALL     "
  271. 2710  LOCATE ,K:PRINT"  \\MOTOR\\   \\MOTOR\\\MOTOR\\   CSRLINCSRLIN          \\MOTOR\\   \\MOTOR\\\MOTOR\\   "
  272. 2720  LOCATE ,K:PRINT"                      CSRLINCSRLIN                              "
  273. 2730  LOCATE ,K:PRINT"  CURRENT I <= 1.5 A. CSRLINCSRLIN      CURRENT I > 1.5 A.      "
  274. 2740  IF POTFLAG=0 THEN 2790
  275. 2750  LOCATE CSRLIN-6,K
  276. 2760  PRINT          "    CALL   CLSSOUNDSOUNDSOUNDCALLSOUNDBSAVESOUND<0xB4!>     CSRLINCSRLIN            CALL   CLSSOUNDSOUNDSOUNDCALLSOUNDBSAVESOUND<0xB4!>     "
  277. 2770  LOCATE ,K:PRINT"    CALL       CALL CLSDEFDBLR4    CSRLINCSRLIN            CALL       CALL CLSDEFDBLR4    "
  278. 2780  LOCATE CSRLIN+4
  279. 2790  COLOR 7,0:T=30
  280. 2800  PRINT TAB(16);"C2, C3 = 1.0 >F/50v Tantalum RF by-pass capacitors"
  281. 2810  PRINT TAB(T);"Vin  =";USING U$;V;:PRINT " volts"
  282. 2820  PRINT TAB(T);"Vout =";USING U$;VOUT;:PRINT " volts"
  283. 2830  PRINT TAB(T);"R3   =";USING U$;R3;:PRINT " -"
  284. 2840  PRINT TAB(T);"R4   =";USING U$;R4;:PRINT " -";
  285. 2850  IF POTFLAG=0 THEN PRINT "":GOTO 2870
  286. 2860  PRINT "  (";POT;"- potentiometer) "
  287. 2870  PRINT TAB(16);"Mount the LM317 and the transistor on heat sinks."
  288. 2880  RETURN
  289. 2890  '
  290. 2900  'HARDCOPY
  291. 2910  GOSUB 3020:LOCATE 25,2:COLOR 14,6
  292. 2920  PRINT " Press 1 to print screen, 2 to print screen & ";
  293. 2930  PRINT "advance paper, or 3 to continue.";:COLOR 7,0
  294. 2940  Z$=INKEY$:IF Z$="3"THEN GOSUB 3020:RETURN
  295. 2950  IF Z$="1"OR Z$="2"THEN GOSUB 3020:GOTO 2970
  296. 2960  GOTO 2940
  297. 2970  FOR QX=1 TO 24:FOR QY=1 TO 80
  298. 2980  LPRINT CHR$(SCREEN(QX,QY));
  299. 2990  NEXT QY:NEXT QX
  300. 3000  IF Z$="2"THEN LPRINT CHR$(12)
  301. 3010  GOTO 2910
  302. 3020  LOCATE 25,1:PRINT STRING$(80,32);:RETURN
  303.